package com.qf.util;

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.impl.calendar.AnnualCalendar;

import java.text.ParseException;
import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 * 2019/11/29
 * Administrator
 * quartz1129
 * 面向对象面向君  不负代码不负卿
 */
public class QuartzUtil {
    //将任务调度的三要素(任务,触发器,调度器)整合到一起
    public void zhixing() {
        try {
            //1.定义任务 参数(自定义任务名称,任务类.class)
            JobDetail jobDetail = new JobDetail("jobyhp", UserJob.class);
            JobDataMap dataMap = new JobDataMap();//用来保存任务过程中的数据
            dataMap.put("username", "李四");
            jobDetail.setJobDataMap(dataMap);
            //2.触发器  SimpleTrigger简单触发器，参数(自定义名称,重复次数,间隔时间-毫秒单位)
            // SimpleTrigger trigger = new SimpleTrigger("trigger",5,2000);
            //cronTrigger表达式 :有七位值    秒   分  时  日  月  星期    年
            CronTrigger trigger = new CronTrigger("trigger", "mygroup", "* * * * * ? ");

                //（1）创建排除时间的工具类，能排除一天或几天的时间
                //org.quartz.impl.calendar.AnnualCalendar
                AnnualCalendar annualCalendar = new AnnualCalendar();
                //（2）得到日期对象
                Calendar instance = GregorianCalendar.getInstance();
                instance.set(Calendar.MONTH, 11);
                instance.set(Calendar.DAY_OF_MONTH, 30);
                //设置去除时间
                annualCalendar.setDayExcluded(instance, true);

                //3.调度器Scheduler
                StdSchedulerFactory stdSchedulerFactory = new StdSchedulerFactory();
                Scheduler scheduler = stdSchedulerFactory.getScheduler();
                //4.由调度器关联触发器和任务
                //设置去除时间
                scheduler.addCalendar("abc", annualCalendar, true, true);
                trigger.setCalendarName("abc");
                scheduler.scheduleJob(jobDetail, trigger);
                //5.启动程序
                scheduler.start();
            } catch (SchedulerException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }




}


    public static void main(String[] args) {
        new QuartzUtil().zhixing();
    }
}
